In modern data networks, network switches are often used to interconnect network devices. A network switch has several network I/O ports for coupling to network-connected devices, usually having on the order of four (4) to 48 such ports. When a data packet arrives at a network I/O port, the switch examines the destination address of the packet and forwards the packet to the appropriate network I/O port. The number of network I/O ports is generally constrained by the physical dimensions of the network cable interface structure (e.g., RG-45 plug interfaces in many Ethernet standards). In installations where more network I/O ports are needed than can be physically placed on a single network switching device (e.g., where a rack-mounted switching device for a standard 19″ rack can comfortably accommodate approximately 48 network I/O ports), stackable switches may be used.
Referring now to FIG. 1, a stack 100 of stackable switches 110, 120, 130, and 140 is shown. Each stackable switch (e.g., switch 110) generally includes a plurality of network I/O ports 111 (e.g., comprising 10 megabit, 100 megabit, gigabit, and/or 10 gigabit Ethernet ports), status indicators 112 (e.g., connectivity and/or activity indicators for each port, power indicators, LCD displays for more detailed information, or any other status indication), local control I/O port 113 (e.g., an RS-232, V.24, an Ethernet port set up with an out-of-band [OOB] interface, or other data port), and one or more high-speed interconnection ports 114 (e.g., gigabit and/or 10 gigabit Ethernet ports). Each stackable switch generally has a CPU (not shown) to handle per-unit control-plane traffic and tasks.
Each stackable switch generally has to be configured to route network packets correctly. For example, quality of service (QoS) rules require the switch which first receives a packet to examine the packet and correctly assign a queue priority based on the QoS rules. Typically, many commands are required to properly configure a switch. As the number of stacked switches increases, the chance of making a mistake and the labor involved in programming each switch individually also increases.
Therefore, a number of conventional approaches to managing a stack of network switches have been used. Typically, a single switch (e.g., switch 110) may be designated a “master” switch, and the remaining switches (e.g., switches 120, 130, and 140) are designated “slave” switches. Generally, the switches in a stack communicate with one another via network connections (e.g., network connections 115, 125, and 135) between high speed network ports (e.g., high speed network ports 114, 124, 134, and 144). Often the switches are further connected in a ring configuration (e.g., comprising network connections 115, 125, 135, and 145) in order to provide robustness in the event that one of the links between the switches becomes cut or otherwise disabled.
All configuration is generally performed on the master switch 110, and the configuration may then be propagated to the slave switches 120, 130, and 140. For example, the master switch is generally given a network address (e.g., an IP address) for network configuration (e.g., by using a web browser to interact with a configuration application running as a server process on the network switch's CPU). However, when the stack is first set up, it may be difficult or impossible to know the correct network address for the configuration service (e.g., because a boot configuration server such as a BOOTP or DHCP server is not available, or because the boot configuration server provides a dynamic network address). Therefore, stackable switches often provide for configuration through a local control I/O port (e.g., a serial port).
A terminal device 150 (e.g., a dedicated terminal, a desktop or laptop computer with a direct port such as a serial port or OOB Ethernet port, or a remote device connected by modem) can be connected to the local serial control port 113 of master switch 110 through a serial data cable. Configuration changes can then be made by interfacing directly with the CPU of master switch 110 through the local control port 113 (e.g., by executing a command-line interactive configuration program running on the CPU of master switch 110 or by passing configuration commands using an established protocol over the local control port).
One difficulty with this approach is that it is sometimes difficult to know which network switch has been or will be designated the master switch. In some implementations, a network administrator may manually designate the master switch. In this case, it is relatively easy for the network administrator to know which switch is the master switch (assuming that the network administrator who is configuring the switch(es) has received this information from the network administrator who designated the master switch). However, many users prefer that switches in a stack automatically designate a master. Accordingly, many conventional network switches may be configured to automatically conduct an “election” protocol between the switches (e.g., by communicating between the switches on network connections 115, 125, 135, and/or 145) to designate the master switch. In this case, it may be difficult or impossible for a user to determine which switch will be designated the master before the stack has started and elected a master switch. Thus, it is may be necessary to wait for the boot process to finish and to be physically present to determine which switch is the master.
It may therefore be advantageous to enable control and/or configuration of a stack of network switches by communicating through a local control port of any one of the switches in the stack.